AWS Elemental Linkのデバイス使用時にAvailability Zoneを意識するケースについてまとめてみた
はじめに
清水です。先日以下のブログエントリで、AWS Elemental LinkでデバイスのAvailability Zone (AZ)が制御できるようになったアップデートをお伝えしました。
このLinkデバイスの割り当てられているAZの参照ならびに変更について、動作をもう少し詳しく確認してみたところ、興味深い現象がありました。LinkデバイスのAZを意識するケースとして、本ブログエントリでまとめておきたいと思います。
なお、LinkデバイスのAZの割り当てについては、MediaLive User GuideのConfiguring the deviceのページに記載がある通り以下が原則となります。
- 標準構成のChannelで2台のLinkデバイスを使う場合は異なるにAZを割り当てて使用する
- シングルパイプライン構成のChannelで複数のLinkデバイスをInputとして使用する場合は単一のAZで使用する
本エントリで確認した挙動についても、これらの原則が当てはまるものです。動作で気になることがあった場合はこの原則に立ち返るのがよいかと思います。
同一AZのLinkデバイスで標準構成のInputを作成するとAZが自動的に変更される
2台のLinkデバイスが同一AZに割り当てられている状態で標準構成のInputを作成
まずは1つ目の現象について確認します。(個人的には、先日のエントリをまとめたあと、動作検証をしていてこの現象に遭遇、おやっとしました。)
LinkデバイスのAZはあらかじめ1つのAZに揃えられている状態とします。なお、以下検証ではいずれもOregon (us-west-2)リージョンを使用しています。(先日のエントリの最後の状態と同じです。)
ここでは2台のLinkデバイスがいずれもus-west-2
に割り当てられている状態ですね。
この状態で、標準構成のInputを作成します。Input classでSTANDARD_INPUT
を選択、Input device AとInput device Bで2台のLinkデバイスをそれぞれ選択します。このCreate inputの画面でも、同じAZ us-west-2b
であることが確認できますね。
標準構成のInputを作成後にLinkデバイスのAZを確認
Inputを作成しました。作成後に遷移するInput詳細画面で2つのLinkデバイスのAZを確認してみましょう。1台目のhd-004axxxxxxxxxxxxxxxxxxxx
はus-west-2b
のままですが、2台目のhd-004vxxxxxxxxxxxxxxxxxxxx
はus-west-2a
になっています。
Devicesの画面でみても、先ほどまで揃えられていたAZが異なるAZになっています。
この間、Inputの作成の操作を行っただけでデバイスの操作は行っていません。CloudTrailも確認しましたが、CreateInput
のみの操作記録でUpdateInputDevice
のAPI呼び出しはありませんでした。また確認した限りドキュメントなどに記載はないため、あくまで推測にはなりますが、Linkデバイスを使用する標準構成のInput(STANDARD_INPUT)作成の際に2台のLinkデバイスが同じAZにある場合、一方のLinkデバイスのAZ変更が自動的に行われるようです。
なお、この挙動自体は冒頭に述べた、MediaLive User GuideのConfiguring the deviceのページにも記載されている原則、XXに合致するものです。このケースでは自動的に2台LinkデバイスでAZがわけられる、という挙動になっているようですね。動作的に支障はないかと思いますが、突然LinkデバイスのAZが変わっていてビックリしないようにしましょう!
異なるAZのLinkデバイスをシングルパイプラインのChannelで使おうとするとエラーとなる
続いて2つ目の現象です。1つ目は標準構成のInput作成の際にLinkデバイスのAZが自動的に分散されることが確認できました。2つのLinkデバイスを使用するケースとしてはもうひとつ、シングルパイプライン構成のChannelで複数のLinkデバイスをInputとして使用するケースがあります。この場合も自動的にLinkデバイスのAZが変更され、今度は同じAZに揃えられる、なんてことがあるのでしょうか、確認してみましょう。
先ほどの検証の続きとして、2台のLinkデバイスのうち一方はus-west-2b
、もう一方はus-west-2a
というAZが分散されている状態から検証を開始します。
Workflow wizardで1台目のLinkデバイスを使用するシングルパイプラインChannelを作成
まずは1台のLinkデバイスを使用したシングルパイプラインのChannelを作成します。InputについてもInput classがSINGLE_INPUT
のものになりますね。作成についてはWorkflow wizardで行いました。
MediaLive channel classはSingle pipeline
を選択します。
Input typeでElemental Link
を選択、Input devicesでus-west-2b
にあるhd-004axxxxxxxxxxxxxxxxxxxx
を選択しました。
今回の検証では直接使用しませんが、Outputsについても設定しておきます。
以下がWorkflowの作成内容まとめです。
Workflowが作成できました。
検証の主役となるChannelの詳細について確認しておきましょう。Channel classはSINGLE_PIPELINE
で、link-single-pipeline-workflow
というInputがアタッチされていますね。
Inputの詳細についても確認しておきます。Input deviceはhd-004axxxxxxxxxxxxxxxxxxxx
でAZはus-west-2b
ですね。
2台目のLinkデバイスのシングルパイプラインChannelへの追加を試行
さて、ここから2台目のLinkデバイスをこのシングルパイプライン構成のChannelで使用する設定を進めていきます。Channelに対して複数のLinkデバイスを使ったInputをアタッチ、ChannelスケジュールでこのInputを切り替える、というような使い方が想定できますね。
Create inputで2台目のLinkデバイスを使用するInputを、SINGLE_INPUT
で作成します。Linkデバイスとしてus-west-2a
に割り当てられているhd-004vxxxxxxxxxxxxxxxxxxxx
を選択します。
2台目のLinkデバイスを使用するInputが作成できました。
続いてこの2台目のLinkデバイスを使用するInputを、先ほど作成したシングルパイプライン構成のChannelに関連付けてみます。1台目のLinkデバイスが関連付けられているChannelですね、EditでInput attachmentsの[Add]ボタンを押下します。
2台目のLinkデバイスを使用するInputを選択、[Confirm]ボタンを押下します。
Input attachmentsの項目に2台目のLinkデバイスを使用するInputが追加されたので[Update channel]ボタンでChannelの更新をしようとしてみますが、ここで以下のエラーが表示されてしまいました。追加する2つ目のInputのAZが1つ目のInputとAZが合致していいないためChannelの更新ができないようです。
これはMediaLive User GuideのConfiguring the deviceのページに記載されている内容、「シングルパイプライン構成のChannelで複数のLinkデバイスをInputとして使用する場合は単一のAZで使用する」ということにも合致しますね。
Validation Errors
Every attached input type that needs availability zone(AZ) alignment (VPC inputs and MediaConnect inputs) must be in the same AZ alignment. This means, for example, if you have two MediaConnect inputs the first flow of input 1 needs to be in the same az as the first flow of input 2.
2台目のLinkデバイスのAZを1台目と同一に変更して再試行
先ほどの同一AZのLinkデバイスで標準構成のInputを作成したケースと異なり自動で変更はされないのか、とも思いつつ、解決策として考えられる2台目のLinkデバイスのAZを1台目と同じAZに変更することを試してみましょう。LinkデバイスがInputで使用されている状況でもAZの変更は可能なようでした。
変更前は2台のLinkデバイスのAZが異なる状況です。(1台目のhd-004axxxxxxxxxxxxxxxxxxxx
はus-west-2b
、2台目のhd-004vxxxxxxxxxxxxxxxxxxxx
はus-west-2a
。)
AZを変更します。2台目、hd-004vxxxxxxxxxxxxxxxxxxxx
のAZをus-west-2a
から1台目と同じus-west-2b
に変更します。
どちらのLinkデバイスもus-west-2b
の状態で、再度Input attachmentsの項目に2台目のLinkデバイスを使用するInputを追加します。[Update channel]ボタンを押下すると、今度はChannelの更新ができました。
シングルパイプラインChannelで異なるAZに関連付けられているLinkデバイスをInputとして使おうとすると、Input attachmentsにInputを追加してChannelを更新する際にエラーとなります。 LinkデバイスのAZの関連付けを同一にしてChannelの更新を行いましょう。
AZを合わせたLinkデバイスをAZ再変更を試行
シングルパイプライン構成のChannelで2台のLinkデバイスのAZが異なる場合、AZを合わせないとInput追加のChannel更新に失敗することを各にしました。それでは、AZを合わせてInputを追加したあと、LinkデバイスのAZを変更しようとするとどうなるでしょうか。
確認してみたところ、LinkデバイスのAZ変更の際、以下のエラーが発生してAZの変更ができませんでした。
Update of the device failed
UnprocessableEntityException: The AZ of both push inputs attached to a channel must be the same.
ここで変更ができたらChannel変更時のエラーはなんだったんだ、ということもありエラーが出るのも想定できますが、LinkデバイスのAZ変更の際、関連付けられているChannelの内容によっては変更ができなくなる点も抑えておきましょう。
まとめ
AWS Elemental LinkのデバイスのAvailability Zone (AZ)割り当てに関する挙動2点を確認してみました。(1) 標準構成のChannelで使用するInput作成時に、同一のAZに関連付けられた2台のLinkデバイスを使おうとすると一方のデバイスのAZが自動的に変更されます。また(2) 異なるAZに関連付けられているLinkデバイスをInputとして同じシングルパイプライン構成のChannelで使おうとするとエラーとなりInputを追加できません。
どちらの挙動もMediaLive User GuideのConfiguring the deviceのページに記載されている、(1) 標準構成Channelで2台のLinkデバイスを使う場合は異なるAZに割り当てて使用する、(2) シングルパイプライン構成のChannelで複数のLinkデバイスをInputとして使用する場合はAZを合わせる、という2つの原則に沿ったものです。この原則に合わせてChannelやInputのリソース作成前にLinkデバイスのAZを変更しておけば、エラーや勝手にLinkデバイスのAZが変わっていた、ということなどに悩まされることはないかと思います。
なおこれらの挙動、LinkデバイスのAZの制御がユーザ側でできなかったときはどうだったのか、気になりはしますが確認する術がないのがむずがゆいところですね。また今回確認した挙動については変更される可能性もあるかもしれません。(自動でAZが変更されずエラーとなるなど。)とはいえ、ドキュメント記載の原則に従っていれば問題などは生じない認識です。Linkデバイスを使用した構成を決定の際、常にAZを意識するようにしておきましょう。